/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package alpes.aerolinea.services;

import alpes.aerolinea.entities.ServicioVideoSeries;
import alpes.aerolinea.persistencia.IPersistenciaServices;
import alpes.aerolinea.persistencia.PersistenciaServicesMock;
import alpes.aerolineas.exceptions.ExisteException;
import alpes.aerolineas.exceptions.NoExisteException;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Remove;
import javax.ejb.Stateful;

/**
 *
 * @author Daniel
 */
@Stateful
public class SeriesDeTvService implements ISeriesDeTvService {

    @EJB
    private IPersistenciaServices persistenciaServices;
    /**
     * representa la seria actual
     */
    private ServicioVideoSeries cSerie;

    //TODO hay que quitar este constructor
    public SeriesDeTvService() {
        //persistenciaServices = new PersistenciaServicesMock();
    }

    /**
     * Crea una nueva instancia de Vendedor y la retorna.
     * @return vendedor. Nueva instancia de vendedor.
     */
    public ServicioVideoSeries newSerie() {
        cSerie = new ServicioVideoSeries();
        return cSerie;
    }

    /**
     * Modifica un vendedor dentro de la persistencia del sistema.
     * @return vendedor. Objeto modificado de la instancia de vendedor que se modifico.
     */
    @Remove
    public ServicioVideoSeries createOrUpdate() throws ExisteException {
        if (cSerie.getId() == null) {
            persistenciaServices.create(cSerie);
        } else {
            persistenciaServices.update(cSerie);
        }
        return cSerie;

    }

    /**
     * Retorna la lista de todos las series de TV registrados en el sistema.
     * @return list. Lista de todos las series de TV registradas en el sistema.
     */
    public List<ServicioVideoSeries> findAll() {

        return persistenciaServices.findAll(ServicioVideoSeries.class);
    }

    public void delete() {
        persistenciaServices.delete(cSerie);
    }

    public ServicioVideoSeries getSerie() {
        return cSerie;
    }

    /**
     * permite establecer la Serie actual por su nombre.
     * @param nombre de la serie de TV que se esta editando.
     * @return
     */
    public ServicioVideoSeries setNombre(String nombre) {
        cSerie = (ServicioVideoSeries) persistenciaServices.findByNombre(ServicioVideoSeries.class, nombre);
        return cSerie;
    }

    public ServicioVideoSeries setIdentification(String id) throws NoExisteException {
        cSerie = (ServicioVideoSeries) persistenciaServices.findByID(ServicioVideoSeries.class, new Long(id));
        return cSerie;
    }
}
